package com.zelma.house.service.impl;

import com.zelma.common.utils.R;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zelma.common.utils.PageUtils;
import com.zelma.common.utils.Query;

import com.zelma.house.dao.SaleDao;
import com.zelma.house.entity.SaleEntity;
import com.zelma.house.service.SaleService;


@Service("saleService")
public class SaleServiceImpl extends ServiceImpl<SaleDao, SaleEntity> implements SaleService {

//    查询楼盘界面
    @Override
    public PageUtils queryPage(Map<String, Object> params) {

        QueryWrapper<SaleEntity> w = new QueryWrapper<>();

//        获取前台地址参数,进行查询
        String address = (String) params.get("address");

//        判断是否为空,不为空则进行判断
        if(StringUtils.isNotEmpty(address)){
//            关键字 模糊查询
            w.like("sale_address",address);
        }

//        获取前台楼盘名字
        String name = (String) params.get("name");

//        判断是否为空
        if(StringUtils.isNotEmpty(name)){
            w.like("sale_name",name);
        }

        IPage<SaleEntity> page = this.page(
                new Query<SaleEntity>().getPage(params),
                w
        );

        return new PageUtils(page);
    }

//    指派经济人
    @Override
    public R agentAppont(SaleEntity byId, Integer agentId) {

//        如果有经纪人的时候要进行修改
        if(byId.getAgentId()!=0){

            /*
            * 提示此楼盘已有经纪人
            *
            * */

            return R.error().put("code","已有经纪人");
        }

//        将经纪人id赋值进数据库
        byId.setAgentId(agentId);

//        修改
        baseMapper.updateById(byId);

        return R.ok();
    }

//    新增楼盘信息
    @Override
    public R saleSave(SaleEntity sale) {

        sale.setSaleTime(new Date());
        sale.setSaleDel(1);
        sale.setAgentId(0);
        baseMapper.insert(sale);
        return R.ok();
    }

    /*
    * 修改状态 是否正常开盘
    * */
    @Override
    public R updateStatus(SaleEntity byId) {

//        判断此时状态是否开盘
        if(byId.getSaleState()==1){
//            1是开盘
            byId.setSaleState(0);
        }
//            0是未开盘
        byId.setSaleState(1);

//        进行修改
        baseMapper.updateById(byId);

        return R.ok();
    }

//    逻辑删除
    @Override
    public R delete(SaleEntity byId) {
//        将显示状态改为不显示即删除
        byId.setSaleDel(0);
//        进行修改
        baseMapper.updateById(byId);
        return R.ok();
    }

}